package cn.tedu.onlinestore.base.file;

import cn.tedu.onlinestore.base.response.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@RestController
@Slf4j
@RequestMapping("/v1/file")
public class UploadController {
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException{
//        1.得到原始文件名
        String filename = file.getOriginalFilename();
//        2.获取图片后缀名
        String suffix = filename.substring(filename.lastIndexOf('.'));
//        3.生成一个唯一不重复的随机字符串作为新的文件名
        filename = UUID.randomUUID() + suffix;
//        4.指定一个路径用来储存上传的图片(注意:这个路径必须自己电脑上有!)
        String dirPath = "d:/files";
//        5.设置一个自定义的日期路径作为储存的文件夹
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
//        6.将实际日期转换成上面格式
        String datePath = sdf.format(new Date());
//        7.将上面的盘符路径与日期路径拼接成一个完整的图片存储文件夹路径
        File dirFile = new File(dirPath + datePath);
//        8.如果不存在就创建
        if (!dirFile.exists()){
            dirFile.mkdirs();
        }
//        9.拼接完整路径
        String filePath = dirPath + datePath + filename;
//        10.保存图片
        file.transferTo(new File(filePath));
//        11.把日期路径+图片名 响应给前端,前端拿到这个数据后再回显图片
        return JsonResult.ok(datePath+filename);
    }

    @PostMapping("remove")
    public JsonResult remove(String imgUrl){
        log.debug("删除图片:{}",imgUrl);
        new File("d:/files"+imgUrl).delete();
        return JsonResult.ok();
    }
}
